package com.binhthuan.catechist.server.domain;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import com.google.gson.annotations.Expose;

/**
 * @author Giang Đinh - Thông tin về 1 ngày học, tương ứng với bảng
 *         <b>ec_schedule</b> trong cơ sở dữ liệu.
 */
@Entity
@Table(name = "ec_schedule")
public class Schedule extends AbstractObject {

    /**
     * Mã thời khóa biểu.
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    @Expose
    private Integer id;
    
    /**
     * Lớp học.
     */
    @ManyToOne
    @JoinColumn(name = "course_id")
    @Expose
    private Course course;
    
    /**
     * Ngày học.
     */
    @ManyToOne
    @JoinColumn(name = "date_id")
    @Expose
    private Date date;
    
    /**
     * Tên bài học.
     */
    @Column(name = "title", length = 20)
    @Expose
    private String title;
    
    /**
     * Nội dung học.
     */
    @Column(name = "content", length = 255)
    @Expose
    private String content;
    
    /**
     * Tình trạng của buổi học.
     */
    @ManyToOne
    @JoinColumn(name = "schedule_status_id")
    @Expose
    private ScheduleStatus status;
    
    /**
     * Ghi chú.
     */
    @Column(name = "comment")
    @Expose
    private String comment;
    
    public Schedule() {
        
    }

    /**
     * Lấy mã thời khóa biểu.
     * @return Mã thời khóa biểu.
     */
    public Integer getId() {
        return id;
    }

    /**
     * Gán mã thời khóa biểu.
     * @param id
     *            Mã thời khóa biểu.
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * Lấy lớp học.
     * @return Lớp học.
     */
    public Course getCourse() {
        return course;
    }

    /**
     * Gán lớp học.
     * @param course
     *            Lớp học.
     */
    public void setCourse(Course course) {
        this.course = course;
    }

    /**
     * Lấy nội dung buổi học.
     * @return Nội dung buổi học.
     */
    public String getContent() {
        return content;
    }

    /**
     * Gán nội dung buổi học.
     * @param content
     *            Nội dung buổi học.
     */
    public void setContent(String content) {
        this.content = content;
    }

    /**
     * Lấy tình trạng của buổi học.
     * @return Tình trạng của buổi học.
     */
    public ScheduleStatus getStatus() {
        return status;
    }

    /**
     * Gán tình trạng của buổi học.
     * @param status
     *            Tình trạng của buổi học.
     */
    public void setStatus(ScheduleStatus status) {
        this.status = status;
    }

    /**
     * Lấy ghi chú.
     * @return Ghi chú.
     */
    public String getComment() {
        return comment;
    }

    /**
     * Gán ghi chú.
     * @param comment
     *            Ghi chú.
     */
    public void setComment(String comment) {
        this.comment = comment;
    }

    /**
     * Lấy ngày học.
     * @return Ngày học.
     */
    public Date getDate() {
        return date;
    }

    /**
     * Gán ngày học.
     * @param day
     *            Ngày học.
     */
    public void setDate(Date date) {
        this.date = date;
    }

    /**
     * Lấy tên bài học.
     * @return Tên bài học.
     */
    public String getTitle() {
        return title;
    }

    /**
     * Gán tên bài học.
     * @param title Tên bài học.
     */
    public void setTitle(String title) {
        this.title = title;
    }
}
